package com.vca.service.service;


import com.vca.common.model.order.StoreOrder;
import com.vca.common.model.order.StoreOrderInfo;

import java.util.List;

/**
 * 订单任务服务
 */
public interface StoreOrderTaskService {

    /**
     * 订单取消
     * @param storeOrder
     * @return
     */
    Boolean cancelByUser(StoreOrder storeOrder);

    /**
     * 活动取消
     * @param storeOrder
     * @return
     */
    Boolean activityCancelByUser(StoreOrder storeOrder,Long schedulingId);

    /**
     * 活动取消
     * @param storeOrder
     * @return
     */
    Boolean adminOrderCancelByUser(StoreOrder storeOrder);

    /**
     * 商品退款
     * @param storeOrder
     * @return
     */
    Boolean orderRefundProductByUser(StoreOrder storeOrder);


    Boolean complete(StoreOrder storeOrder);

    Boolean refundOrder(StoreOrder storeOrder);

    /**
     *@Description:自动取消未支付订单
     *@author:chenbing
     *@date 2022/12/7 13:47
     */
    Boolean autoCancel(StoreOrder storeOrder);

    /**
     *@Description:退货超时取消
     *@author:chenbing
     *@date 2022/12/7 13:47
     */
    Boolean returnTimeout(StoreOrder storeOrder);

    /**
     *@Description:推送取消订单消息提醒
     *@author:chenbing
     *@date 2023/1/5 18:54
     */
    boolean pushMessageTip(StoreOrder storeOrder,String reason);

    Boolean productCancelOrder(StoreOrder storeOrder);


    /**
     * 退款消息通知
     * @param storeOrder
     * @param orderInfoList
     * @return
     */
    Boolean orderConsentRefund(StoreOrder storeOrder, List<StoreOrderInfo> orderInfoList);

}
